﻿bool createdNew;

//用第三个参数，命名一个名字，在进程间共享同一个信号量
//初始化为1，表示同时只能有一个线程可以拿到信号量
Semaphore semaphore = new Semaphore(1, 1, "PigeonNamedSemaphore", out createdNew);

if (createdNew)
{
    Console.WriteLine("创建了新信号量");
}
else
{
    Console.WriteLine("打开了现有信号量");
}

while (true)
{
    try
    {
        semaphore.WaitOne();

        Console.WriteLine("进程A拿到信号量，开始工作!");

        Thread.Sleep(2000);

    }
    finally
    {
        semaphore.Release();
    }
}

